import allure
from airtest.core.api import *

from common.airtest.airtest_base import AirtestBase, exists_1
from common.log.log import log
from config.conf import BASE_DIR
from po.jinhua.applets_po.my.exchange_record_page import ExchangeRecordPage
from po.jinhua.applets_po.my.my_address_page import MyAddressPage
from po.jinhua.applets_po.my.my_balance_page import MyBalancePage
from po.jinhua.applets_po.my.my_collection_page import MyCollection
from po.jinhua.applets_po.my.my_coupon_page import CouponPage
from po.jinhua.applets_po.my.my_information_page import MyInformationPage
from po.jinhua.applets_po.my.my_invoice_page import MyInvoicePage
from po.jinhua.applets_po.my.my_message_page import MyMessagePage
from po.jinhua.applets_po.my.my_order_page import MyOrder
from po.jinhua.applets_po.my.my_share_page import MyShare
from po.jinhua.applets_po.my.points_details_page import PointsDetailsPage
from po.jinhua.applets_po.my.sign_in_every_day_page import SignInEveryDayPage
from po.jinhua.applets_po.my.system_setting_page import SystemSettingPage


class MyPage:
    """
    个人中心，我的
    """

    @allure.step('我的-打开优惠卷')
    def open_coupon(self):
        """
        我的-打开优惠卷
        :return:
        """
        try:
            log.info('我的-打开优惠卷')
            AirtestBase().click_5(BASE_DIR + r"/element_picture/我的/优惠卷.png")
            return CouponPage()
        except Exception as e:
            log.error(f'我的-打开优惠卷，过程中出现异常为：{e}')
            raise e

    @allure.step('我的-打开我的佣金')
    def open_commission(self):
        """
        我的-打开我的佣金
        :return:
        """
        try:
            log.info('我的-打开我的佣金')
            AirtestBase().click_5(BASE_DIR + r"/element_picture/我的/我的佣金.png")
            return MyShare()
        except Exception as e:
            log.error(f'我的-打开我的佣金，过程中出现异常为：{e}')
            raise e

    @allure.step('我的-打开我的收藏')
    def open_collection(self):
        """
        我的-打开我的收藏
        :return:
        """
        try:
            log.info('我的-打开我的收藏')
            AirtestBase().click_5(BASE_DIR + r"/element_picture/我的/我的收藏.png")
            return MyCollection()
        except Exception as e:
            log.error(f'我的-打开我的收藏，过程中出现异常为：{e}')
            raise e

    @allure.step('我的-打开我的资料')
    def open_information(self):
        """
        我的-打开我的资料
        :return:
        """
        try:
            log.info('我的-打开我的资料')
            AirtestBase().click_5(BASE_DIR + r"/element_picture/我的/头像.png")
            return MyInformationPage()
        except Exception as e:
            log.error(f'我的-打开我的资料，过程中出现异常为：{e}')
            raise e

    @allure.step('我的-打开会员中心')
    def open_member_center(self):
        """
        我的-打开会员中心
        :return:
        """
        try:
            log.info('我的-打开会员中心')
            AirtestBase().click_5(BASE_DIR + r"/element_picture/我的/进入个人中心.png")
            return MyPage()
        except Exception as e:
            log.error(f'我的-打开会员中心，过程中出现异常为：{e}')
            raise e

    @allure.step('我的-打开我的订单')
    def open_my_order(self):
        """
        我的-打开我的订单
        :return:
        """
        try:
            log.info('我的-打开我的订单')
            AirtestBase().click_5(BASE_DIR + r"/element_picture/我的/查看全部.png")
            return MyOrder()
        except Exception as e:
            log.error(f'我的-打开我的订单，过程中出现异常为：{e}')
            raise e

    @allure.step('我的-打开我的积分')
    def open_my_points(self):
        """
        我的-打开我的积分
        :return:
        """
        try:
            log.info('我的-打开我的积分')
            AirtestBase().click_5(BASE_DIR + r"/element_picture/我的/积分明细.png")
            return PointsDetailsPage()
        except Exception as e:
            log.error(f'我的-打开我的积分，过程中出现异常为：{e}')
            raise e

    @allure.step('我的-打开每天签到')
    def open_sign_in_every_day(self):
        """
        我的-打开每天签到
        :return:
        """
        try:
            log.info('我的-打开每天签到')
            AirtestBase().click_5(BASE_DIR + r"/element_picture/我的/每日打卡.png")
            return SignInEveryDayPage()
        except Exception as e:
            log.error(f'我的-打开每天签到，过程中出现异常为：{e}')
            raise e

    @allure.step('我的-打开兑换优惠券')
    def open_redeem_coupon(self):
        """
        我的-打开兑换优惠券
        :return:
        """
        try:
            log.info('我的-打开兑换优惠券')
            AirtestBase().click_5(BASE_DIR + r"/element_picture/我的/兑换优惠券.png")
            return ExchangeRecordPage()
        except Exception as e:
            log.error(f'我的-打开兑换优惠券，过程中出现异常为：{e}')
            raise e

    @allure.step('小程序，打开我的消息')
    def open_my_message(self):
        """
        小程序，打开我的消息
        """
        try:
            log.info('小程序，打开我的消息')
            element_1 = BASE_DIR + r"/element_picture/我的/我的消息.png"
            if exists_1(element_1):
                AirtestBase().click_5(element_1)
                return MyMessagePage()
            else:
                AirtestBase().up_or_down('down')
                AirtestBase().click_5(element_1)
                return MyMessagePage()
        except Exception as e:
            log.error(f'打开我的消息出现异常为：{e}')
            raise e

    @allure.step('小程序，打开我的发票')
    def open_my_invoice(self):
        """
        小程序，打开我的发票
        """
        try:
            log.info('小程序，打开我的发票')
            element_1 = BASE_DIR + r"/element_picture/我的/我的发票.png"
            if exists_1(element_1):
                AirtestBase().click_5(element_1)
                return MyInvoicePage()
            else:
                AirtestBase().up_or_down('down')
                AirtestBase().click_5(element_1)
                return MyInvoicePage()
        except Exception as e:
            log.error(f'打开我的发票出现异常为：{e}')
            raise e

    @allure.step('个人中心，打开我的地址')
    def open_my_address(self):
        """
        个人中心，打开我的地址
        """
        try:
            log.info('个人中心，打开我的地址')
            element_1 = BASE_DIR + r"/element_picture/我的/我的地址.png"
            if exists_1(element_1):
                AirtestBase().click_5(element_1)
                return MyAddressPage()
            else:
                AirtestBase().up_or_down('down')
                AirtestBase().click_5(element_1)
                return MyAddressPage()
        except Exception as e:
            log.error(f'个人中心，打开我的地址出现异常为：{e}')
            raise e

    @allure.step('个人中心，打开我的余额')
    def open_my_balance(self):
        """
        个人中心，打开我的余额
        """
        try:
            log.info('个人中心，打开我的余额')
            element_1 = BASE_DIR + r"/element_picture/我的/我的余额.png"
            if exists_1(element_1):
                AirtestBase().click_5(element_1)
                return MyBalancePage()
            else:
                AirtestBase().up_or_down('down')
                AirtestBase().click_5(element_1)
                return MyBalancePage()
        except Exception as e:
            log.error(f'个人中心，打开我的余额出现异常为：{e}')
            raise e

    @allure.step('个人中心，打开系统设置')
    def open_system_setting(self):
        """
        个人中心，打开系统设置
        """
        try:
            log.info('个人中心，打开系统设置')
            element_1 = BASE_DIR + r"/element_picture/我的/系统设置.png"
            if exists_1(element_1):
                AirtestBase().click_5(element_1)
                return SystemSettingPage()
            else:
                AirtestBase().up_or_down('down')
                AirtestBase().click_5(element_1)
                return SystemSettingPage()
        except Exception as e:
            log.error(f'个人中心，打开系统设置出现异常为：{e}')
            raise e

    @allure.step('个人中心，打开分享中心')
    def open_sharing_center(self):
        """
        个人中心，打开分享中心
        """
        try:
            log.info('个人中心，打开分享中心')
            element_1 = BASE_DIR + r"/element_picture/我的/分享中心.png"
            if exists_1(element_1):
                AirtestBase().click_5(element_1)
                return MyShare()
            else:
                AirtestBase().up_or_down('down')
                AirtestBase().click_5(element_1)
                return MyShare()
        except Exception as e:
            log.error(f'个人中心，打开分享中心出现异常为：{e}')
            raise e
